Internet Protocol (IP) networks have become ubiquitous data infrastructures for delivering digital information world wide, particularly for data, voice and streaming video. As an increasing amount of data traffic delivered over IP networks contains multimedia content, the issue of providing reliable and high-throughput transport of such data has become more important.
For example, in a system for delivering media content (particularly digital video content) that may or may not be compressed, there are servers for sending out the media content and receivers for receiving the media content. The server typically holds the content in disk drive based storage arrays. The receivers may also store the received content in local disk drive arrays, or may decode and display the content on local display devices. Such an environment has several aspects that differentiate it from other forms of data delivery. First, the data files are typically very large, comprising multiple gigabytes (GB) or more of data. Second, the data delivery must be at a high bit rate, usually at multiple megabits per second or higher. Furthermore, certain levels of timing control must be maintained during the delivery. These timing requirements impose restrictions on the amount of acceptable delay and delay jitter during the data transmission.
Many network infrastructures, however, are designed and implemented with non-time-sensitive computer data in mind. Reliable delivery of data is guaranteed by end-to-end network protocols, e.g., Transmission Control Protocol (TCP) protocols. In TCP protocol, data is transferred and verified by both the sender and receiver to ensure correctness (i.e., to ensure that the binary data is not altered due to data transmission errors). Such protocols have evolved over the years to become capable of delivering data over different types of network transmission lines and over long distances.
For digital media content, particularly for digital video data, merely delivering the data without bit errors is often insufficient. Digital video data usually has a timing requirement because encoded video images must be decoded at the receiver at fixed time intervals. As a result, the receiver's decoder buffer must have sufficient data for decoding. For real-time delivery of a compressed video bitstream over a network, the data blocks must arrive at the receiver at prescribed times to avoid receiver buffer overflow or underflow. In addition, when the digital media content is delivered over a network under the direction of the receiving client, end-to-end transport latency must be low. However, the TCP network transport protocol is not designed for such real-time delivery with low latency because they do not guarantee the end-to-end delay jitter and latency of the delivered data. As a result, even though data may arrive at the receiver correctly, it may arrive either too late or too early. In addition, the computational complexity of the TCP protocol is relatively large because both the sender and the receiver must each maintain state machines at their end of the connection. “State machines” are well known to those of ordinary skill—this refers to “finite state machines” which can be in a limited number of states, and which change from one state to another in response to an event, such as the arrival of a given packet from the other party over, for example, a TCP connection. These state machines are designed to help ensure that the transmitted data blocks are all accounted for, whether they are in a server buffer, in a receiver buffer or in transit from the server to the receiver. In addition, the state machines maintain the order of the data arriving at the receiver and deal with lost, duplicate, and out-of-order data blocks or packets. Often this additional computational overhead is taken up by co-processor engines designed to offload and handle only the TCP processing, which improves performance at the expense of increased overall system cost and complexity.
When using the TCP protocol, the server holds the data in the server buffer until it receives confirmation from the receiver that up to a certain amount of data has been received, at which point the server buffer is cleared of the successfully transmitted data blocks. The server maintains a finite buffer size, often referred to as its transmission window. If the server transmit buffer is full and no portion of its data has been confirmed by the receiver as being correctly received, the server will stop transmission until either such confirmation arrives or a time-out occurs. At time-out, a portion of the data in the server buffer will be retransmitted and the whole process begins again. In addition, adaptive slow-start algorithms are used to ensure that transmitted data does not flood the network causing massive retransmissions and reducing the overall efficiency.
With the TCP protocol, it is possible to send data packets via many different paths through an IP network and still ensure that the packets are delivered to the destination process in correct order without duplicates, errors or packet loss. The throughput of such transport protocols, however, depends on the quality of the transport network delivery, which is based on factors including bit error rate, packet loss rate, transmission delay and jitter, packet re-order rate, etc. For example, if a data block is lost during transit within the network, the server must wait till time-out and then retransmit the data block. Network delivery latency, packet loss, and packets out-of-order may significantly decrease the end-to-end transport throughput through retransmissions and time-outs.
An alternate transport protocol, User Datagram Protocol (UDP), was developed to create alternatives to the constraints imposed by TCP. UDP can be used to increase end-to-end transport throughput. It tends to be less complex than TCP, but it does not offer the above-described features that can make TCP so useful in certain applications, such as guaranteeing against lost, duplicated, or out-of-order packets. Instead, the UDP protocol is a stateless implementation that does not require the server and receiver to each maintain a state machine to ensure correct transmission. Specifically, with the UDP implementation, an application process at the server segments the data into blocks, encapsulates them into UDP and then IP packets, and delivers them over the IP network with best efforts (i.e., without waiting for receiving acknowledgement). As a result, there is no retransmission of packets and no sliding windowing buffers. A server using UDP is thus capable of delivering data blocks very efficiently without the need to hold the data in its buffer and wait for confirmation, but lost and out-of-order packets are not reported to the server. Therefore, UDP transport does not ensure the quality of data delivery and is usually suitable only for use in reliable networks or for situations where unreliable data delivery is acceptable by the end applications.
The foregoing illustrates that UDP and TCP based transmissions each have their own benefits and weaknesses. UDP transmission is efficient, and because it does not require a one-to-one connection between the sender and the receiver, it can also be used to provide multicasting of video or other rich content (e.g., delivering copies of the same video data to multiple locations). In addition, end-to-end transmission delay is bounded by the inherent delay of the network transport as no retransmission is provided and thus there is no extra buffer delay within the server. As previously discussed, however, UDP transmission cannot guarantee data transmission reliability. On the other hand, while TCP based transmissions are highly reliable, general control of delivery timing is not possible because it is a function of the quality of service (QoS) of the underlying network. An unreliable network will force retransmission of packets, resulting in excessive delays. Thus the average end-to-end delay and delay jitter can well exceed that of the actual network transport delay and delay jitter.
In sum, for large scale distribution of digital video programs through digital cable, digital subscriber line (DSL), Ethernet or other broadband networks, it is extremely important that the digital video data can be delivered to large number of end client receivers with high efficiency, high bandwidth and reliability. This places significant demands on the network, content storage, distribution equipment, and processing requirement to achieve high input/output (I/O) throughput and more importantly, the QoS required for these applications. It would, therefore, be advantageous to have a method and a system capable of transporting such data over different types of networks with high efficiency, low latency and high reliability.